﻿// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "FLL/C5/simplesahder"
{
            //-------------------------------[属性]----------------------------

    Properties
    {
            _Color ("颜色|color tint",Color)=(1.0,1.0,1.0,1.0)
    }
    SubShader
    {

        Pass
        { 
            //-------------------------[开始cg代码片段]------------------------
            CGPROGRAM
            // 预编译指令关键词 | 函数类型 | 函数名 
            // vertex,fragment 分别是顶点着色器类型和片元着色器类型
            #pragma vertex vert
            #pragma fragment frag      

            // 在CG代码中,我们需要定义一个与属性名称和类型都匹配的变量
            fixed4 _Color;

            // 使用一个结构体来定义顶点着色器的输入
            struct a2v{
                // POSITION语义告诉UNITY:用模型空间的顶点坐标来填充vetex变量
                float4 vertex :POSITION;
                // NORMAL语义告诉UNITY:用模型空间的法线来填充normal变量
                float4 normal:NORMAL;
                // TEXCOORD0语义告诉UNITY:用模型的第一套(有15套)纹理坐标来填充texcood变量
                float4 texcoord: TEXCOORD0;

            };

            // 使用一个结构体来定义顶点着色器的输出(片元着色器的输入)
            struct v2f{
                // SV_POSITION语义告诉UNITY:pos里包含了顶点在裁剪空间中的位置信息
                // SV_POSITION告诉unity顶点着色器输出的是裁剪空间的坐标
                float4 pos:SV_POSITION;
                // COLOR0 语义可以用于存储颜色的信息
                fixed3 color:COLOR0;
            };

            v2f vert(a2v v){
                // 声明输出结构
                v2f o;
                o.pos= UnityObjectToClipPos (v.vertex);
                // v.normal包含了顶点的法线方向,其分量范围在[-1.0,1.0]之间
                // 将其映射到[0,1]之间,并储存到o.color中传递给片元着色器
                o.color=v.normal*0.5+fixed3(0.5,0.5,0.5);
                return o;
            }

            float4 frag(v2f i):SV_Target{
                fixed3 c=i.color;
                // 使用_Color属性来来控制输出颜色
                c*=_Color.rgb;
                return fixed4(c,1.0);
            }
            ENDCG
            //-----------------------[cg代码片段结束]-----------------------------

            //-----------其他设置-------------------
        }
    }
}
